fn main() {
    // Definition.
    let a = 5;

    println!("a is: {a}");

    // Mutability.
    let mut b = 5;
    dbg!(&b);
    b = 10;

    println!("b is: {b}");

    // Shadowing.
    let c = 10;
    dbg!(&c);
    let c = 20;

    println!("c is: {c}");

    // Scope.
    let d = 30;
    {
        let d = 40;
        println!("inner d is: {d}");
    }

    println!("d is: {d}")
}
